// ================================================================== 方法所用到的接口
/** 结构示例 - 框架上传接口的文件列表元素对象 */
interface face_networkUploadItem {
    /** 文件对应的接收key */
    name: string;
    /** 文件的资源或是地址 */
    data: string | object;
}
/** 结构示例 - 框架普通接口请求固定返回对象 */
interface face_networkDataBack {
    /** 本次请求是否成功 */
    isSuccess: boolean;
    /** 状态码 */
    statusCode: number;
    /** 说明文字 */
    errMsg: string;
    /** 服务器返回的响应头 */
    header: any;
    /** 服务器返回数据 */
    data: any;
}
/** 结构示例 - 框架上传下载请求进度变化固定返回对象 */
interface face_networkProgressBack {
    /** 进度百分比 */
    percentage: number;
    /** 要处理数据的总量 */
    total: number;
    /** 已经处理完成的数据的量 */
    over: number;
}
/** 结构示例 - 框架接口类方法参数 */
interface face_networkParam {
    /** 接口请求方式，GET、POST等 【request】 */
    method?: type_deal_method;
    /** 请求接口地址 【request/upload/download】 */
    url?: string;
    /** 地址栏需要传递数据 【request/upload/download】 */
    pathData?: object;
    /** 普通要传输的数据 【request/upload】 */
    data?: object;
    /** 需要上传的文件列表，元素示例：{name:"(文件对应的接收key)",data:"(文件资源/地址)"} 【upload】 */
    files?: face_networkUploadItem[];
    /** 请求过程中loading弹框的文字内容 (null为不显示loading弹框) 【request/upload/download】 */
    loadingText?: string;
    /** 请求的进度变化监听函数 【upload/download】 */
    progress?: function_callback_progress;
    /** 请求成功后的回调函数 【request/upload/download】 */
    success?: function_callback_request;
    /** 请求失败后的回调函数 【request/upload/download】 */
    fail?: function_callback_request;

    // ============================================ 请求头：
    /** 请求头设置，默认会添加：Content-type 【request/upload/download】 */
    header?: object;
    /** 设置请求头中的Content-Type值，1：application/json 2：x-www 【request】 */
    contentType?: number;

    // ============================================ 进阶处理：
    /** 是否开启接口公用地址头自动拼接 【request/upload/download】 */
    openHttphead?: boolean;
    /** 是否开启接口绿色通道，true：一定执行、false：等上个完毕才能执行 【request】 */
    openGreen?: boolean;
    /** 是否延时显示请求中的loading弹框 【request】 */
    openWait?: boolean;
    /** 是否开启接口请求错误信息提示弹框 【request/upload/download】 */
    openError?: boolean;
    /** 超时时间，单位ms，默认：10秒 【request/upload/download】 */
    timeout?: number;
    /** 服务端返回数据类型预处理 【request/upload】 */
    responseType?: type_deal_response;
}


// ================================================================== 方法所用到的类型定义
/** 网络请求通用IP地址头部处理方式
 * @value get 获取
 * @value set 设置
 */
type type_deal_http = 'get' | 'set';
/** 请求地址队列处理方式
 * @value add 添加
 * @value del 删除
 */
type type_deal_queue = 'add' | 'del';
/** 接口请求方式
 * @value get 向特定资源发出请求
 * @value post 向指定资源提交数据进行处理请求
 * @value put 向指定资源位置上上传其最新内容
 * @value head 与服务器索与get请求一致的响应，响应体不回返回，获取包含在小信息头中的原有信息
 * @value delete 请求服务器删除request-url所表示的资源
 * @value trace 回显服务器收到的请求，用于测试和诊断
 * @value opions 返回服务器针对特定资源所支持的html请求方法或web服务器发送*测试服务器功能
 * @value connect http/1.1协议中能够将连接改为管道方式的代理服务器
 */
type type_deal_method = 'get' | 'post' | 'put' | 'head' | 'delete' | 'trace' | 'opions' | 'connect';
/** 接口请求响应内置的报错方式
 * @value queue 队列占用
 * @value timeout 请求超时
 * @value unifail UNI框架报错
 */
type type_way_calldeal = 'queue' | 'timeout' | 'unifail';
/** 对服务器返回数据进行的数据预处理方式
 * @value text 解析为字符串
 * @value json 解析为对象
 * @value document 解析为文档对象
 * @value blob 解析为二进制对象
 * @value arraybuffer 解析为二进制数组
 */
type type_deal_response = 'text' | 'json' | 'document' | 'blob' | 'arraybuffer';
/** 普通接口请求的回调 */
type function_callback_request = (obj_req: face_networkDataBack) => void;
/** 上传/下载接口进度变化的回调 */
type function_callback_progress = (obj_req: face_networkProgressBack) => void;


export {
    face_networkUploadItem,
    face_networkDataBack,
    face_networkProgressBack,
    face_networkParam,
    type_deal_http,
    type_deal_queue,
    type_deal_method,
    type_way_calldeal,
    type_deal_response,
    function_callback_request,
    function_callback_progress,
};